<?php
class ConfiguracionController extends AppController
{

	var $name = 'Configuracion';
	var $uses = array('Sistema','Modulo_sistema','Accion_sistema','Opcion_sistema','Sistema_modulo_sistema','Sistema_modulo_accion','Usuario_sistema',
'Modulo_accion_opcion','Usuario','Permiso');
	var $helpers = array('Ajax','Html','Form','Javascript','Js','Json','For','Vista');
	var $layout =  "ajax";
	var $components = array('Json','Util','For','Interfaz','Vista'/*,'RequestHandler','DebugKit.Toolbar'*/);


	public function beforeFilter()
  	{
  		$this->validar();
  	}
  	
 	function index()
	{
 	}

	public function listado_sistemas($busq=null) 
	{
		$this->Vista->title('Listado de Sistemas');
		$data=$this->Sistema->find('all',array('conditions'=> array("Sistema.id > "=>'0')));
		$this->set('data',$data);
		$this->set('busq',$busq);
		$this->log();
	}

	public function nuevo_sistema($div='vista',$divlistado='vista') 
	{	
		$data=$this->data=null;
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
	}

	function guardar_nuevo_sistema() 
	{
			$data=$this->request->data;
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Sistema','nombre',$data['nombre'],'nombre'))
			{
				$this->Vista->mensaje('Este Nombre de Sistema ya se Encuentra Registrado','ERROR','nombre');
			}
			else if($this->Vista->verifica('Sistema','siglas',$data['siglas'],'siglas'))
			{
				$this->Vista->mensaje('Estas SIGLAS de Sistema ya se Encuentra Registrado','ERROR','nombre');
			}
			else
			{
					$data['Sistema']['nombre']=$data['nombre'];
					$data['Sistema']['nombre_var']=trim(str_replace(' ','_',$data['siglas']));
					$data['Sistema']['siglas']=trim($data['siglas']);
					$data['Sistema']['estatus']=1;
		 			if ($this->Sistema->save($data))
					{
						$this->Vista->mensaje('Sistema Registrado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Registrar el Sistema','ERROR');
			}
			$this->listado_sistemas();
			$this->render('listado_sistemas');
	}

	public function ver_datos_nuevo_sistema($div='vista',$divlistado='vista',$tipo,$id=null) 
	{	
		$data=$this->data=null;
	  $id_limpio = $this->Interfaz->id($id);
		$this->set('data',$this->Sistema->find('first',array('conditions'=> array("Sistema.id"=>$id_limpio))));
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		if($tipo==2)	$this->set('tipo','nada');
		else if($tipo==1)	$this->set('tipo','guardar');
	}

	function guardar_modificar_nuevo_sistema() 
	{
			$data=$this->request->data;
			$id_limpio = $this->Interfaz->id($data['id_sistema']);
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Sistema','nombre',$data['nombre'],'nombre',$id_limpio ))
			{
				$this->Vista->mensaje('Este Nombre de Sistema ya se Encuentra Registrado','ERROR','nombre');
			}
			else if($this->Vista->verifica('Sistema','siglas',$data['siglas'],'siglas',$id_limpio))
			{
				$this->Vista->mensaje('Estas SIGLAS de Sistema ya se Encuentran Registradas','ERROR','siglas');
			}
			else
			{
					$d['Sistema']['id']=$id_limpio;
					$d['Sistema']['nombre']=$data['nombre'];
					$d['Sistema']['nombre_var']=trim(str_replace(' ','_',$data['siglas']));
					$d['Sistema']['siglas']=trim($data['siglas']);
					$d['Sistema']['estatus']=1;
		 			if ($this->Sistema->save($d))
					{
						$this->Vista->mensaje('Datos de Sistema Modificado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Sistema','ERROR');
			}
			$this->listado_sistemas();
			$this->render('listado_sistemas');
	}

	function cambiar_estatus_sistema($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);	
			if($es==0)
			{
				$estatus=1;
				$msj="Sistema Activado Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Sistema Desactivado Exitosamente!!!";
			}
			
			$d['Sistema']['id']=$id_limpio;
			$d['Sistema']['estatus']=$estatus;
		 	if ($this->Sistema->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Sistema','ERROR');
			
			$this->listado_sistemas();
			$this->render('listado_sistemas');
	}


	public function listado_modulos($busq=null) 
	{
		$this->Vista->title('Listado de Modulos');
		$data=$this->Modulo_sistema->find('all',array('conditions'=> array("Modulo_sistema.id>'0'")));
		$this->set('data',$data);
		$this->set('busq',$busq);
		$this->log();
	}

	public function nuevo_modulo($div='vista',$divlistado='vista') 
	{	
		$data=$this->data=null;
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
	}

	function guardar_nuevo_modulo() 
	{
			$data=$this->request->data;
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ERROR');
			}
			else if($this->Vista->verifica('Modulo_sistema','nombre',$data['nombre'],'nombre'))
			{
				$this->Vista->mensaje('Este Nombre del Modulo ya se Encuentra Registrado','ERROR','nombre');
			}
			else
			{
					$data['Modulo_sistema']['nombre']=$data['nombre'];
					$data['Modulo_sistema']['nombre_var']=trim(str_replace(' ','_',$data['nombre']));
					$data['Modulo_sistema']['estatus']=1;
		 			if ($this->Modulo_sistema->save($data))
					{
						$this->Vista->mensaje('Modulo Registrado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Registrar el Modulo','ERROR');
			}
			$this->listado_modulos();
			$this->render('listado_modulos');
	}

	public function ver_datos_nuevo_modulo($div='vista',$divlistado='vista',$tipo,$id=null) 
	{	
		$data=$this->data=null;
	  $id_limpio = $this->Interfaz->id($id);
		$this->set('data',$this->Modulo_sistema->find('first',array('conditions'=> array("Modulo_sistema.id"=>$id_limpio))));
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		if($tipo==2)	$this->set('tipo','nada');
		else if($tipo==1)	$this->set('tipo','guardar');
	}

	function guardar_modificar_nuevo_modulo() 
	{
			$data=$this->request->data;
			$id_limpio = $this->Interfaz->id($data['id_modulo']);
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Modulo_sistema','nombre',$data['nombre'],'nombre',$id_limpio ))
			{
				$this->Vista->mensaje('Este Nombre de Modulo ya se Encuentra Registrado','ERROR','nombre');
			}
			else
			{
					$d['Modulo_sistema']['id']=$id_limpio;
					$d['Modulo_sistema']['nombre']=$data['nombre'];
					$d['Modulo_sistema']['nombre_var']=trim(str_replace(' ','_',$data['nombre']));
					$d['Modulo_sistema']['estatus']=1;
		 			if ($this->Modulo_sistema->save($d))
					{
						$this->Vista->mensaje('Datos del Modulo Modificado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Modulo','ERROR');
			}
			$this->listado_modulos();
			$this->render('listado_modulos');
	}

	function cambiar_estatus_modulo($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);
			
			if($es==0)
			{
				$estatus=1;
				$msj="Modulo Activado Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Modulo Desactivado Exitosamente!!!";
			}
			
			$d['Modulo_sistema']['id']=$id_limpio;
			$d['Modulo_sistema']['estatus']=$estatus;
		 	if ($this->Modulo_sistema->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Modulo','ERROR');
			
			$this->listado_modulos();
			$this->render('listado_modulos');
	}


	public function listado_acciones($busq=null) 
	{
		$this->Vista->title('Listado de Acciones');
		$data=$this->Accion_sistema->find('all',array('conditions'=> array("Accion_sistema.id>'0'")));
		$this->set('data',$data);
		$this->set('busq',$busq);
		$this->log();
	}

	public function nuevo_accion_sistema($div='vista',$divlistado='vista') 
	{	
		$data=$this->data=null;
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
	}

	function guardar_nuevo_accion_sistema() 
	{
			$data=$this->request->data;
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Accion_sistema','nombre',$data['nombre'],'nombre'))
			{
				$this->Vista->mensaje('Este Nombre de la Accion ya se Encuentra Registrada','ERROR','nombre');
			}
			else
			{
					$data['Accion_sistema']['nombre']=$data['nombre'];
					$data['Accion_sistema']['nombre_var']=trim(str_replace(' ','_',$data['nombre']));
					$data['Accion_sistema']['estatus']=1;
		 			if ($this->Accion_sistema->save($data))
					{
						$this->Vista->mensaje('Accion del Sistema Registrado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Registrar la Accion del Sistema','ERROR');
			}
			$this->listado_acciones();
			$this->render('listado_acciones');
	}

	public function ver_datos_nuevo_accion_sistema($div='vista',$divlistado='vista',$tipo,$id=null) 
	{	
		$data=$this->data=null;
	  $id_limpio = $this->Interfaz->id($id);
		$this->set('data',$this->Accion_sistema->find('first',array('conditions'=> array("Accion_sistema.id"=>$id_limpio))));
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		if($tipo==2)	$this->set('tipo','nada');
		else if($tipo==1)	$this->set('tipo','guardar');
	}

	function guardar_modificar_nuevo_accion_sistema() 
	{
			$data=$this->request->data;
			$id_limpio = $this->Interfaz->id($data['id_accion']);
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Accion_sistema','nombre',$data['nombre'],'nombre',$id_limpio ))
			{
				$this->Vista->mensaje('Este Nombre de Accion ya se Encuentra Registrado','ERROR','nombre');
			}
			else
			{
					$d['Accion_sistema']['id']=$id_limpio;
					$d['Accion_sistema']['nombre']=$data['nombre'];
					$d['Accion_sistema']['nombre_var']=trim(str_replace(' ','_',$data['nombre']));
					$d['Accion_sistema']['estatus']=1;
		 			if ($this->Accion_sistema->save($d))
					{
						$this->Vista->mensaje('Datos de la Accion Modificado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Accion','ERROR');
			}
			$this->listado_acciones();
			$this->render('listado_acciones');
	}

	function cambiar_estatus_accion_sistema($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);
			
			if($es==0)
			{
				$estatus=1;
				$msj="Accion Activada Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Accion Desactivada Exitosamente!!!";
			}
			
			$d['Accion_sistema']['id']=$id_limpio;
			$d['Accion_sistema']['estatus']=$estatus;
		 	if ($this->Accion_sistema->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Accion','ERROR');
			
			$this->listado_acciones();
			$this->render('listado_acciones');
	}


	public function listado_opciones($busq=null) 
	{
		$this->Vista->title('Listado de Opciones');
		$data=$this->Opcion_sistema->find('all',array('conditions'=> array("Opcion_sistema.id>'0'")));
		$this->set('data',$data);
		$this->set('busq',$busq);
		$this->log();
	}

	public function nuevo_opcion_sistema($div='vista',$divlistado='vista') 
	{	
		$data=$this->data=null;
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
	}

	function guardar_nuevo_opcion_sistema() 
	{
			$data=$this->request->data;
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Opcion_sistema','nombre',$data['nombre'],'nombre'))
			{
				$this->Vista->mensaje('Este Nombre de la Opcion ya se Encuentra Registrado','ERROR','nombre');
			}
			else
			{
					$data['Opcion_sistema']['nombre']=$data['nombre'];
					$data['Opcion_sistema']['nombre_var']=trim(str_replace(' ','_',$data['nombre']));
					$data['Opcion_sistema']['estatus']=1;
		 			if ($this->Opcion_sistema->save($data))
					{
						$this->Vista->mensaje('Opcion del Sistema Registrado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Registrar la Opcion del Sistema','ERROR');
			}
			$this->listado_opciones();
			$this->render('listado_opciones');
	}

	public function ver_datos_nuevo_opcion_sistema($div='vista',$divlistado='vista',$tipo,$id=null) 
	{	
		$data=$this->data=null;
	  $id_limpio = $this->Interfaz->id($id);
		$this->set('data',$this->Opcion_sistema->find('first',array('conditions'=> array("Opcion_sistema.id"=>$id_limpio))));
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		if($tipo==2)	$this->set('tipo','nada');
		else if($tipo==1)	$this->set('tipo','guardar');
	}

	function guardar_modificar_nuevo_opcion_sistema() 
	{
			$data=$this->request->data;
			$id_limpio = $this->Interfaz->id($data['id_opcion']);
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica('Opcion_sistema','nombre',$data['nombre'],'nombre',$id_limpio ))
			{
				$this->Vista->mensaje('Este Nombre de Opcion ya se Encuentra Registrado','ERROR','nombre');
			}
			else
			{
					$d['Opcion_sistema']['id']=$id_limpio;
					$d['Opcion_sistema']['nombre']=$data['nombre'];
					$d['Opcion_sistema']['nombre_var']=trim(str_replace(' ','_',$data['nombre']));
					$d['Opcion_sistema']['estatus']=1;
		 			if ($this->Opcion_sistema->save($d))
					{
						$this->Vista->mensaje('Datos de la Opcion Modificado Exitosamente','EXITO');
						$this->log();
					}
					else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion','ERROR');
			}
			$this->listado_opciones();
			$this->render('listado_opciones');
	}

	function cambiar_estatus_opcion_sistema($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);
			
			if($es==0)
			{
				$estatus=1;
				$msj="Opcion Activada Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Opcion Desactivada Exitosamente!!!";
			}
			
			$d['Opcion_sistema']['id']=$id_limpio;
			$d['Opcion_sistema']['estatus']=$estatus;
		 	if ($this->Opcion_sistema->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion','ERROR');
			
			$this->listado_opciones();
			$this->render('listado_opciones');
	}



	public function listado_modulo_sistemas($busq=null) 
	{
		$this->Vista->title('Listado de Modulos Por Sistema');
		$data=$this->Sistema->find('all',array('conditions'=> array("Sistema.id >"=>0)));
		$modulos=array();
		$tam=array();
		for($j=0; $j < count($data); $j++)
		{
				$aux= $this->Sistema_modulo_sistema->find('all',array(
				'fields'=> array("Sistema_modulo_sistema.id","Sistema_modulo_sistema.estatus","Modulo_sistema.nombre"),
				'conditions'=> array("Sistema_modulo_sistema.sistema_id"=>$data[$j]['Sistema']['id'])));
			
				$tam[$j]=count($aux);
				if($tam[$j]==0) $aux=null;
				$modulos[$j]=$aux;

		}
		
		$this->set('data',$data);$this->set('tam',$tam);
		$this->set('modulos',$modulos);	$this->set('busq',$busq);
		$this->log();
	}

	public function nuevo_sistema_modulo_sistena($div='vista',$divlistado='vista') 
	{	
			$data=$this->data=null;
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);
			$this->set('lista_sistema',$this->Util->lista_sistemas(1));
			$this->set('lista_modulo_sistema',$this->Util->lista_modulo_sistema());
	}

	function cambiar_estatus_sistema_modulo_sistema($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);
			
			if($es==0)
			{
				$estatus=1;
				$msj="Modulo del Sistema Activada Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Modulo del Sistema Desactivada Exitosamente!!!";
			}
			
			$d['Sistema_modulo_sistema']['id']=$id_limpio;
			$d['Sistema_modulo_sistema']['estatus']=$estatus;
		 	if ($this->Sistema_modulo_sistema->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion','ERROR');
			
			$this->listado_modulo_sistemas();
			$this->render('listado_modulo_sistemas');
	}

	function guardar_nuevo_sistema_modulo_sistema() 
	{
			$data=$this->request->data;
			
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica_dos('Sistema_modulo_sistema','sistema_id','modulo_sistema_id',$data['sistema_id'],$data['modulo_sistema_id'],'modulo_sistema_id'))
			{
				$this->Vista->mensaje('Este Modulo ya se Encuentra Asignado al Sistema','ERROR','modulo_sistema_id');
			}
			else
			{
					$id_sistema=$data['sistema_id'];
					$this->Sistema_modulo_sistema->query('BEGIN  WORK');
					$d['Sistema_modulo_sistema']['sistema_id']=$data['sistema_id'];
					$d['Sistema_modulo_sistema']['modulo_sistema_id']=$data['modulo_sistema_id'];
		 			if ($this->Sistema_modulo_sistema->save($d))
					{
							$this->log();
							$id=$this->Sistema_modulo_sistema->id;
							$d=null;
							$d['Sistema_modulo_accion']['sistema_modulo_sistema_id']=$id;
							$d['Sistema_modulo_accion']['accion_sistema_id']=$this->Accion_sistema->mi_id('ESTATUS');
							if ($this->Sistema_modulo_accion->save($d))
							{
									$this->log();
									$id=$this->Sistema_modulo_accion->id;
									$d=null;
									$d['Modulo_accion_opcion']['sistema_modulo_accion_id']=$id;
									$d['Modulo_accion_opcion']['opcion_sistema_id']=$this->Opcion_sistema->mi_id('ESTATUS');
									if($this->Modulo_accion_opcion->save($d))
									{
											$id_maoi=$this->Modulo_accion_opcion->id;
											$res=$this->asigna_permiso_individual($id_sistema,$id_maoi);
											if($res)
											{
													$this->Vista->mensaje('Se Asigno el Modulo al Sistema Exitosamente','EXITO');
													$this->log();
													$this->Sistema_modulo_sistema->query('COMMIT');
											}
											else
											{
													$this->Sistema_modulo_sistema->query('ROLLBACK');
													$this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema','ERROR');
											}
									}
									else
									{
											$this->Sistema_modulo_sistema->query('ROLLBACK');
											$this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema','ERROR');
									}
							}
							else
							{
									$this->Sistema_modulo_sistema->query('ROLLBACK');
									$this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema','ERROR');
							}
					}
					else
					{
						$this->Sistema_modulo_sistema->query('ROLLBACK');
						$this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema','ERROR');
					}
			}
			$this->listado_modulo_sistemas();
			$this->render('listado_modulo_sistemas');
	}

	
	public function listado_modulo_acion_sistemas($busq=null) 
	{
		$this->Vista->title('Listado de Modulos Accion Por Sistema');
		$data=$this->Sistema->find('all',array('conditions'=> array("Sistema.id >"=>0)));
		$modulos=array();
		$tam=array();
		for($j=0; $j < count($data); $j++)
		{
				$aux= $this->Sistema_modulo_sistema->find('all',array(
				'fields'=> array("Sistema_modulo_sistema.id","Sistema_modulo_sistema.estatus","Modulo_sistema.nombre"),
				'conditions'=> array("Sistema_modulo_sistema.sistema_id"=>$data[$j]['Sistema']['id'])));
			
				$tam[$j]=count($aux);
				if($tam[$j]==0) $aux=null;
				$modulos[$j]=$aux;

		}
		
		$this->set('data',$data);$this->set('tam',$tam);
		$this->set('modulos',$modulos);	$this->set('busq',$busq);
		$this->log();
	}


	public function listado_modulo_accion($div='vista',$divlistado='vista',$id_sistema=null) 
	{	
			$busq='';
			$this->Vista->title('Listado de Modulos Accion Por Sistema');
			$data=$this->Sistema->find('all',array('conditions'=> array("Sistema.estatus "=>1)));
			
			
			$datos2=array();
			$modulos=array();
			$tam=array();
			for($k=0; $k < count($data);$k++)
			{
					$data2=$this->Sistema_modulo_sistema->find('all',array(
									 'fields'=>array('Sistema_modulo_sistema.id','Modulo_sistema.nombre'),
									 'conditions'=> array("Sistema_modulo_sistema.sistema_id"=>$data[$k]['Sistema']['id'])));
					$datos2[$k]=$data2;
					for($j=0; $j < count($data2); $j++)
					{
							$aux= $this->Sistema_modulo_accion->find('all',array(
							'fields'=> array("Sistema_modulo_accion.id","Sistema_modulo_accion.estatus","Accion_sistema.nombre"),
							'conditions'=> array("Sistema_modulo_accion.sistema_modulo_sistema_id"=>$data2[$j]['Sistema_modulo_sistema']['id'])));
			
							$tam[$k][$j]=count($aux);
							if($tam[$k][$j]==0) $aux=null;
							$modulos[$k][$j]=$aux;
					}
			}

					
					
			$this->set('lista_sistemas',$this->Util->lista_sistemas());
			$this->set('data',$data);$this->set('tam',$tam);$this->set('data2',$datos2);
			$this->set('modulos',$modulos);	$this->set('busq',$busq);$this->set('id_sistema',$id_sistema);
			$this->log();
	}

	public function montar_modulos_sistemamodulo($id_sistema=null) 
	{
			if(!isset($id_sistema))
			{
					$acciones=null;$lista=null;
			}
			else
			{
					$acciones= $this->Sistema_modulo_sistema->find('all',array('fields'=>'Sistema_modulo_sistema.id, Modulo_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.sistema_id'=>$id_sistema)));
					if(count($acciones)==0) $lista=null;
					else
					{
							for($i=0;$i < count($acciones); $i++)
								$lista[$acciones[$i]['Sistema_modulo_sistema']['id']]=$acciones[$i]['Modulo_sistema']['nombre'];
					}
			}
			$this->set('lista_accion_sistema',$lista);
	}

	public function montar_acciones_sistemamodulo($id_sistema_modulo=null) 
	{
			if(!isset($id_sistema_modulo))
			{
					$acciones=null;$lista=null;
			}
			else
			{
					$acciones= $this->Sistema_modulo_sistema->find('all',array('fields'=>'Sistema_modulo_sistema.id, Modulo_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.sistema_id'=>$id_sistema_modulo)));
					if(count($acciones)==0) $lista=null;
					else
					{
							for($i=0;$i < count($acciones); $i++)
								$lista[$acciones[$i]['Sistema_modulo_sistema']['id']]=$acciones[$i]['Modulo_sistema']['nombre'];
					}
			}
			$this->set('lista_accion_sistema',$lista);
	}

	public function nuevo_sistema_modulo_accion($div='vista',$divlistado='vista') 
	{	
			$data=$this->data=null;
			$id_sistema=1;
			$this->set('div',$div);$this->set('id_sistema',$id_sistema);
			$this->set('divlistado',$divlistado);
			$this->set('lista_sistema',$this->Util->lista_sistemas(1));
			$codigo= $this->Sistema_modulo_sistema->find('all',array('fields'=>'Sistema_modulo_sistema.id, Modulo_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.sistema_id'=>$id_sistema)));
			if(count($codigo)==0) $lista=null;
			for($k=0;$k< count($codigo); $k++)
			{
				$lista[$codigo[$k]['Sistema_modulo_sistema']['id']]=$codigo[$k]['Modulo_sistema']['nombre'];
			}
			$this->set('lista_modulo_sistema',$lista);
			$this->set('lista_accion_sistema',$this->Util->lista_accion_sistema());
	}

	public function guardar_nuevo_sistema_modulo_accion() 
	{
 			$data=$this->request->data;
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica_dos('Sistema_modulo_accion','sistema_modulo_sistema_id','accion_sistema_id',$data['modulo_sistema_id'],$data['accion_sistema_id'],'accion_sistema_id'))
			{
				$this->Vista->mensaje('Esta Accion ya se Encuentra Asignado al Modulo del Sistema','ERROR','accion_sistema_id');
			}
			else
			{
					$id_sistema=$data['id_sistema'];
					$this->Sistema_modulo_accion->query('BEGIN  WORK');
					$d['Sistema_modulo_accion']['sistema_modulo_sistema_id']=$data['modulo_sistema_id'];
					$d['Sistema_modulo_accion']['accion_sistema_id']=$data['accion_sistema_id'];
		 			if ($this->Sistema_modulo_accion->save($d))
					{
							$this->log();
							$id=$this->Sistema_modulo_accion->id;
							$d=null;
							$d['Modulo_accion_opcion']['sistema_modulo_accion_id']=$id;
							$d['Modulo_accion_opcion']['opcion_sistema_id']=$this->Opcion_sistema->mi_id('ESTATUS');
							if($this->Modulo_accion_opcion->save($d))
							{
									$id_maoi=$this->Modulo_accion_opcion->id;
									$res=$this->asigna_permiso_individual($id_sistema,$id_maoi);
									if($res)
									{
											$this->Vista->mensaje('Se Asigno la Accion al Modulo del Sistema Exitosamente','EXITO');
											$this->log();
											$this->Sistema_modulo_accion->query('COMMIT');
									}
									else
									{
										$this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema','ERROR');
										$this->Sistema_modulo_accion->query('ROLLBACK');
									}
							}
							else
							{
								$this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema','ERROR');
								$this->Sistema_modulo_accion->query('ROLLBACK');
							}
					}
					else
					{
						$this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema','ERROR');
						$this->Sistema_modulo_accion->query('ROLLBACK');
					}
			}
			$this->listado_modulo_accion('vista','vista',$data['id_sistema']);
			$this->render('listado_modulo_accion');
	}

	function cambiar_estatus_sistema_modulo_accion($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);
			
			if($es==0)
			{
				$estatus=1;
				$msj="Accion del Sistema Activada Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Accion del Sistema Desactivada Exitosamente!!!";
			}
			
			$d['Sistema_modulo_accion']['id']=$id_limpio;
			$d['Sistema_modulo_accion']['estatus']=$estatus;
		 	if ($this->Sistema_modulo_accion->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Accion','ERROR');
			
			$this->listado_modulo_accion('vista','vista');
			$this->render('listado_modulo_accion');
	}


	public function listado_modulo_accion_opcion($div='vista',$divlistado='vista',$id_sistema=null,$id_modulo=null) 
	{
			$busq='';
			$this->Vista->title('Listado de Modulos Accion Por Sistema');
			$data=$this->Sistema->find('all',array('conditions'=> array("Sistema.estatus "=>1)));
			$datos2=array();
			$modulos=array();
			$tam=array();
			$opciones=array();
			$tam2=array();
			for($k=0; $k < count($data);$k++)
			{
					$data2=$this->Sistema_modulo_sistema->find('all',array(
									 'fields'=>array('Sistema_modulo_sistema.id','Modulo_sistema.nombre'),
									 'conditions'=> array("Sistema_modulo_sistema.sistema_id"=>$data[$k]['Sistema']['id'])));
					$datos2[$k]=$data2;
					for($j=0; $j < count($data2); $j++)
					{
							$aux= $this->Sistema_modulo_accion->find('all',array(
							'fields'=> array("Sistema_modulo_accion.id","Sistema_modulo_accion.estatus","Accion_sistema.nombre"),
							'conditions'=> array("Sistema_modulo_accion.sistema_modulo_sistema_id"=>$data2[$j]['Sistema_modulo_sistema']['id'])));
			
							$tam[$k][$j]=count($aux);
							if($tam[$k][$j]==0) $aux=null;
							$modulos[$k][$j]=$aux;
							for($z=0; $z < $tam[$k][$j]; $z++)
							{
									$aux2= $this->Modulo_accion_opcion->find('all',array(
									'fields'=> array("Modulo_accion_opcion.id","Modulo_accion_opcion.estatus","Opcion_sistema.nombre"),
									'conditions'=> array("Modulo_accion_opcion.sistema_modulo_accion_id"=>$modulos[$k][$j][$z]['Sistema_modulo_accion']['id'])));
									$tam2[$k][$j][$z]=count($aux2);
									if($tam2[$k][$j][$z]==0) $aux2=null;
									$opciones[$k][$j][$z]=$aux2;
							}
					}
			}

					
					
			$this->set('lista_sistemas',$this->Util->lista_sistemas());
			$this->set('data',$data);$this->set('tam',$tam);$this->set('data2',$datos2);$this->set('tam2',$tam2);$this->set('opciones',$opciones);
			$this->set('modulos',$modulos);	$this->set('busq',$busq);$this->set('id_sistema',$id_sistema);
			$this->log();
	}

	public function montar_modulos_sistemamodulo2($id_sistema=null) 
	{
			if(!isset($id_sistema))
			{
					$acciones=null;$lista=null;
			}
			else
			{
					$acciones= $this->Sistema_modulo_sistema->find('all',array('fields'=>'Sistema_modulo_sistema.id, Modulo_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.sistema_id'=>$id_sistema)));
					if(count($acciones)==0) $lista=null;
					else
					{
							for($i=0;$i < count($acciones); $i++)
								$lista[$acciones[$i]['Sistema_modulo_sistema']['id']]=$acciones[$i]['Modulo_sistema']['nombre'];
					}
			}
			$this->set('lista_accion_sistema',$lista);
	}

	public function montar_modulo_listado($divlistado='vista',$id_sistema=null) 
	{
		$this->set('divlistado',$divlistado);
			if(!isset($id_sistema))
			{
					$acciones=null;$lista=null;
			}
			else
			{
					$acciones= $this->Sistema_modulo_sistema->find('all',array('fields'=>'Sistema_modulo_sistema.id, Modulo_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.sistema_id'=>$id_sistema)));
					if(count($acciones)==0) $lista=null;
					for($k=0;$k< count($acciones); $k++)
					{
						$lista[$acciones[$k]['Sistema_modulo_sistema']['id']]=$acciones[$k]['Modulo_sistema']['nombre'];
					}
			}
			$this->set('lista_modulos',$lista);
	}

	public function nuevo_sistema_modulo_accion_opcion($div='vista',$divlistado='vista') 
	{	
			
			$data=$this->data=null;
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);
			$this->set('lista_sistema',$this->Util->lista_sistemas(1));
			
	}

	public function montar_modulos($id_sistema=null) 
	{
			if(!isset($id_sistema))
			{
					$acciones=null;$lista=null;
			}
			else
			{
					$acciones= $this->Sistema_modulo_accion->find('all',array('fields'=>'Sistema_modulo_accion.id, Accion_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.id'=>$id_sistema)));
					if(count($acciones)==0) $lista=null;
					for($k=0;$k< count($acciones); $k++)
					{
						$lista[$acciones[$k]['Sistema_modulo_accion']['id']]=$acciones[$k]['Accion_sistema']['nombre'];
					}
			}
			$this->set('lista_accion_sistema',$lista);
	}

	public function montar_opciones($id_sistema_modulo_accion=null) 
	{
			if(!isset($id_sistema_modulo_accion))
			{
					$acciones=null;$lista=null;
			}
			else
			{
					$lista= $this->Opcion_sistema->find('list',array('fields'=>'Opcion_sistema.id, Opcion_sistema.nombre','conditions'=>array('Opcion_sistema.estatus'=>1)));
			}
			$this->set('lista_opcion_sistema',$lista);
	}

	public function guardar_nuevo_sistema_modulo_accion_opcion() 
	{
			$data=$this->request->data;
			$id_sistema=$data['sistema_id'];
			$data=$this->Interfaz->data($data);
			$rep=0;
			if($this->Vista->empyt($data))
			{
				$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
			}
			else if($this->Vista->verifica_dos('Modulo_accion_opcion','sistema_modulo_accion_id','opcion_sistema_id',$data['sistema_modulo_accion_id'],$data['opcion_sistema_id'],'opcion_sistema_id'))
			{
				$this->Vista->mensaje('Esta Opcion ya se Encuentra Asignado al Modulo del Sistema','ERROR','opcion_sistema_id');
			}
			else
			{
					
					$this->Modulo_accion_opcion->query('BEGIN  WORK');
					$d['Modulo_accion_opcion']['sistema_modulo_accion_id']=$data['sistema_modulo_accion_id'];
					$d['Modulo_accion_opcion']['opcion_sistema_id']=$data['opcion_sistema_id'];
		 			if ($this->Modulo_accion_opcion->save($d))
					{
							$id=$this->Modulo_accion_opcion->id;
							$res=$this->asigna_permiso_individual($id_sistema,$id);
							if($res)
							{
									$this->Vista->mensaje('Se Asigno la Opcion al Modulo del Sistema Exitosamente','EXITO');
									$this->Sistema_modulo_accion->query('COMMIT');
							}
							else
							{
									$this->Vista->mensaje('Ocurrio un Error al Asignar Opcion al Modulo del Sistema','ERROR');
									$this->Modulo_accion_opcion->query('ROLLBACK');
							}
					}
					else
					{
						$this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema','ERROR');
						$this->Modulo_accion_opcion->query('ROLLBACK');
					}
			}
			$this->log();
			$this->listado_modulo_accion_opcion();
			$this->render('listado_modulo_accion_opcion');
	}

	

	function cambiar_estatus_sistema_modulo_accion_opcion($id,$es) 
	{
			$id_limpio = $this->Interfaz->id($id);
			if($es==0)
			{
				$estatus=1;
				$msj="Accion del Sistema Activada Exitosamente!!!";
			}
			else
			{
				$estatus=0;
				$msj="Accion del Sistema Desactivada Exitosamente!!!";
			}
			
			$d['Modulo_accion_opcion']['id']=$id_limpio;
			$d['Modulo_accion_opcion']['estatus']=$estatus;
		 	if ($this->Modulo_accion_opcion->save($d))
			{
				$this->Vista->mensaje($msj,'EXITO');
				$this->log();
			}
			else $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion','ERROR');
			$this->listado_modulo_accion_opcion();
			$this->render('listado_modulo_accion_opcion');
	}


		function asigna_permiso_individual($id_sistema,$modulo_accion_opcion_id)
		{
				$f= $this->Usuario_sistema->find('all',array('fields'=>array('Usuario.id','Usuario.tipo_usuario_id'),
'conditions' => array('Usuario_sistema.sistema_id' =>$id_sistema),'order' => 'Usuario.id ASC'));
				$ban=1;	
				for($i=0;$i< count($f);$i++)
				{
						$a= $this->Permiso->find('first',array('fields'=>array('Permiso.id'),
'conditions' => array('Permiso.usuario_id' =>$f[$i]['Usuario']['id'],'Permiso.modulo_accion_opcion_id' =>$modulo_accion_opcion_id)));
						if(!isset($a['Permiso']['id']))
						{
								$this->data=NULL;
								if($f[$i]['Usuario']['tipo_usuario_id']==1) $est=1;
								else $est=0;
								$d['Permiso']['usuario_id']=$f[$i]['Usuario']['id'];
								$d['Permiso']['modulo_accion_opcion_id']=$modulo_accion_opcion_id;
								$d['Permiso']['permiso']=$est;	
								if($this->Permiso->saveAll($d))
								{
										$ban=$ban*1;
								}
								else
								{
										$ban=0;
										break;		
								}
						}
				}
			
				return $ban;
		}

		public function filtrado_configuracion($div='vista',$divlistado='vista') 
		{
				$this->set('div',$div);
				$this->set('divlistado',$divlistado);
				$this->set('lista_sistema',$this->Util->lista_sistemas(1));
		}

		public function montar_modulos_sistemamodulo_filtro($id_sistema=null) 
		{
				if(!isset($id_sistema))
				{
						$acciones=null;$lista=null;
				}
				else
				{
						$acciones= $this->Sistema_modulo_sistema->find('all',array('fields'=>'Sistema_modulo_sistema.id, Modulo_sistema.nombre','conditions'=>array('Sistema_modulo_sistema.sistema_id'=>$id_sistema)));
						if(count($acciones)==0) $lista=null;
						else
						{
								for($i=0;$i < count($acciones); $i++)
									$lista[$acciones[$i]['Sistema_modulo_sistema']['id']]=$acciones[$i]['Modulo_sistema']['nombre'];
						}
				}
				$this->set('lista_accion_sistema',$lista);
		}

		public function listado_filtrado_configuracion() 
		{
				$data=$this->request->data;
				

				$opciones= $this->Opcion_sistema->find('all', array('conditions' => array('Opcion_sistema.estatus' =>1),'fields'=>array('Opcion_sistema.id','Opcion_sistema.nombre'),'order' => 'Opcion_sistema.id ASC'));
				
				$id=$data['modulo_sistema_id'];
				$mod_acci= $this->Sistema_modulo_accion->find('all', array('conditions' => array('Sistema_modulo_accion.sistema_modulo_sistema_id' =>$id),'fields'=>array('Sistema_modulo_accion.id','Accion_sistema.nombre')));
				$tam=count($mod_acci);
				if($tam>0)
				{
						for($j=0;$j< count($mod_acci);$j++)
						{
								$accion[$j]=$mod_acci[$j]['Accion_sistema']['nombre'];
								for($k=0;$k< count($opciones);$k++)
								{
										$n= $this->Modulo_accion_opcion->find('first', array('conditions' => array('Modulo_accion_opcion.sistema_modulo_accion_id' =>$mod_acci[$j]['Sistema_modulo_accion']['id'],'opcion_sistema_id' =>$opciones[$k]['Opcion_sistema']['id']),'fields'=>array('id')));
										if(!empty($n['Modulo_accion_opcion']['id']) && $n['Modulo_accion_opcion']['id']>0) $r='SI';
										else $r='NO';
										$accion_opcion[$j][$k]=$r;
								}
						}
				}
				else
				{ 
						$accion[0]='Nada';$accion_opcion[0][0]='Nada';
				}
				$this->set('acciones',$accion);
				$this->set('tamanio',$tam);
				$this->set('accion_opcion',$accion_opcion);

				$this->set('opciones',$opciones);
				
/*
No es facil vivir en un mundo intranquilo y confuso
es dificil creer cuando existe tanta incertidumbre 
es penoso esperar cuando hay tanta confucion
				$id_sistema=$data['sistema_id'];
				$data=$this->Interfaz->data($data);
				$rep=0;
				if($this->Vista->empyt($data))
				{
					$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
				}
				else if($this->Vista->verifica_dos('Modulo_accion_opcion','sistema_modulo_accion_id','opcion_sistema_id',$data['sistema_modulo_accion_id'],$data['opcion_sistema_id'],'opcion_sistema_id'))
				{
					$this->Vista->mensaje('Esta Opcion ya se Encuentra Asignado al Modulo del Sistema','ERROR','opcion_sistema_id');
				}
				else
				{
					
						$this->Modulo_accion_opcion->query('BEGIN  WORK');
						$d['Modulo_accion_opcion']['sistema_modulo_accion_id']=$data['sistema_modulo_accion_id'];
						$d['Modulo_accion_opcion']['opcion_sistema_id']=$data['opcion_sistema_id'];
			 			if ($this->Modulo_accion_opcion->save($d))
						{
								$id=$this->Modulo_accion_opcion->id;
								$res=$this->asigna_permiso_individual($id_sistema,$id);
								if($res)
								{
										$this->Vista->mensaje('Se Asigno la Opcion al Modulo del Sistema Exitosamente','EXITO');
										$this->Sistema_modulo_accion->query('COMMIT');
								}
								else
								{
										$this->Vista->mensaje('Ocurrio un Error al Asignar Opcion al Modulo del Sistema','ERROR');
										$this->Modulo_accion_opcion->query('ROLLBACK');
								}
						}
						else
						{
							$this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema','ERROR');
							$this->Modulo_accion_opcion->query('ROLLBACK');
						}
				}
				$this->log();
*/
		}


		function ver_configuracion($div='vista',$divlistado='vista',$id_sistema=null)
		{
				if(!isset($id_sistema))
				{
						$data=$this->Sistema->find('first',array('conditions'=> array("Sistema.estatus "=>1)));
						$id_sistema=$data['Sistema']['id'];
////$id_sistema=1;
				}

				$modu= $this->Sistema_modulo_sistema->find('all', array('conditions' => array('Sistema_modulo_sistema.sistema_id' =>$id_sistema,'Sistema_modulo_sistema.estatus' =>1),'order' => 'Sistema_modulo_sistema.id ASC','fields'=>array('Sistema_modulo_sistema.id','Modulo_sistema.nombre')));
				if(count($modu)>0)
				{
						$opciones= $this->Opcion_sistema->find('all', array('conditions' => array('Opcion_sistema.estatus' =>1),'fields'=>array('Opcion_sistema.id','Opcion_sistema.nombre'),'order' => 'Opcion_sistema.id ASC'));
						for($i=0;$i< count($modu);$i++)
						{
								$id=$modu[$i]['Sistema_modulo_sistema']['id'];
								$mod_acci= $this->Sistema_modulo_accion->find('all', array('conditions' => array('Sistema_modulo_accion.sistema_modulo_sistema_id' =>$id),'fields'=>array('Sistema_modulo_accion.id','Accion_sistema.nombre')));
								$tam[$i]=count($mod_acci);
								if($tam[$i]>0)
								{
										for($j=0;$j< count($mod_acci);$j++)
										{
												$accion[$i][$j]=$mod_acci[$j]['Accion_sistema']['nombre'];
												for($k=0;$k< count($opciones);$k++)
												{
														$n= $this->Modulo_accion_opcion->find('first', array('conditions' => array('Modulo_accion_opcion.sistema_modulo_accion_id' =>$mod_acci[$j]['Sistema_modulo_accion']['id'],'opcion_sistema_id' =>$opciones[$k]['Opcion_sistema']['id']),'fields'=>array('id')));
														if(!empty($n['Modulo_accion_opcion']['id']) && $n['Modulo_accion_opcion']['id']>0) $r='SI';
														else $r='NO';
														$accion_opcion[$i][$j][$k]=$r;
												}
										}
								}
								else
								{ 
										$accion[$i][0]='Nada';$accion_opcion[$i][0][0]='Nada';
								}
						}
				}
				else
				{
						$accion=NULL;
					 	$tam=NULL;
					 	$accion_opcion=NULL;
					 	$modu=NULL;
						$opciones=NULL;
				}
				$this->set('acciones',$accion);
				$this->set('tamanio',$tam);
				$this->set('accion_opcion',$accion_opcion);
				$this->set('modulos',$modu);
				$this->set('opciones',$opciones);
				$this->set('id_sistema',$id_sistema);
				$this->set('lista_sistema',$this->Util->lista_sistemas());
		}
}
